home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / io / ObjectInputStream$GetFieldImpl.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.7 KB  |  103 lines

  1. package java.io;
  2.  
  3. class ObjectInputStream$GetFieldImpl extends ObjectInputStream.GetField {
  4.    private final ObjectStreamClass desc;
  5.    private final byte[] primVals;
  6.    private final Object[] objVals;
  7.    private final int[] objHandles;
  8.    // $FF: synthetic field
  9.    final ObjectInputStream this$0;
  10.  
  11.    ObjectInputStream$GetFieldImpl(ObjectInputStream var1, ObjectStreamClass var2) {
  12.       this.this$0 = var1;
  13.       this.desc = var2;
  14.       this.primVals = new byte[var2.getPrimDataSize()];
  15.       this.objVals = new Object[var2.getNumObjFields()];
  16.       this.objHandles = new int[this.objVals.length];
  17.    }
  18.  
  19.    public ObjectStreamClass getObjectStreamClass() {
  20.       return this.desc;
  21.    }
  22.  
  23.    public boolean defaulted(String var1) throws IOException {
  24.       return this.getFieldOffset(var1, (Class)null) < 0;
  25.    }
  26.  
  27.    public boolean get(String var1, boolean var2) throws IOException {
  28.       int var3 = this.getFieldOffset(var1, Boolean.TYPE);
  29.       return var3 >= 0 ? Bits.getBoolean(this.primVals, var3) : var2;
  30.    }
  31.  
  32.    public byte get(String var1, byte var2) throws IOException {
  33.       int var3 = this.getFieldOffset(var1, Byte.TYPE);
  34.       return var3 >= 0 ? this.primVals[var3] : var2;
  35.    }
  36.  
  37.    public char get(String var1, char var2) throws IOException {
  38.       int var3 = this.getFieldOffset(var1, Character.TYPE);
  39.       return var3 >= 0 ? Bits.getChar(this.primVals, var3) : var2;
  40.    }
  41.  
  42.    public short get(String var1, short var2) throws IOException {
  43.       int var3 = this.getFieldOffset(var1, Short.TYPE);
  44.       return var3 >= 0 ? Bits.getShort(this.primVals, var3) : var2;
  45.    }
  46.  
  47.    public int get(String var1, int var2) throws IOException {
  48.       int var3 = this.getFieldOffset(var1, Integer.TYPE);
  49.       return var3 >= 0 ? Bits.getInt(this.primVals, var3) : var2;
  50.    }
  51.  
  52.    public float get(String var1, float var2) throws IOException {
  53.       int var3 = this.getFieldOffset(var1, Float.TYPE);
  54.       return var3 >= 0 ? Bits.getFloat(this.primVals, var3) : var2;
  55.    }
  56.  
  57.    public long get(String var1, long var2) throws IOException {
  58.       int var4 = this.getFieldOffset(var1, Long.TYPE);
  59.       return var4 >= 0 ? Bits.getLong(this.primVals, var4) : var2;
  60.    }
  61.  
  62.    public double get(String var1, double var2) throws IOException {
  63.       int var4 = this.getFieldOffset(var1, Double.TYPE);
  64.       return var4 >= 0 ? Bits.getDouble(this.primVals, var4) : var2;
  65.    }
  66.  
  67.    public Object get(String var1, Object var2) throws IOException {
  68.       int var3 = this.getFieldOffset(var1, Object.class);
  69.       if (var3 >= 0) {
  70.          int var4 = this.objHandles[var3];
  71.          ObjectInputStream.access$100(this.this$0).markDependency(ObjectInputStream.access$000(this.this$0), var4);
  72.          return ObjectInputStream.access$100(this.this$0).lookupException(var4) == null ? this.objVals[var3] : null;
  73.       } else {
  74.          return var2;
  75.       }
  76.    }
  77.  
  78.    void readFields() throws IOException {
  79.       ObjectInputStream.access$200(this.this$0).readFully(this.primVals, 0, this.primVals.length, false);
  80.       int var1 = ObjectInputStream.access$000(this.this$0);
  81.       ObjectStreamField[] var2 = this.desc.getFields(false);
  82.       int var3 = var2.length - this.objVals.length;
  83.  
  84.       for(int var4 = 0; var4 < this.objVals.length; ++var4) {
  85.          this.objVals[var4] = ObjectInputStream.access$300(this.this$0, var2[var3 + var4].isUnshared());
  86.          this.objHandles[var4] = ObjectInputStream.access$000(this.this$0);
  87.       }
  88.  
  89.       ObjectInputStream.access$002(this.this$0, var1);
  90.    }
  91.  
  92.    private int getFieldOffset(String var1, Class var2) {
  93.       ObjectStreamField var3 = this.desc.getField(var1, var2);
  94.       if (var3 != null) {
  95.          return var3.getOffset();
  96.       } else if (this.desc.getLocalDesc().getField(var1, var2) != null) {
  97.          return -1;
  98.       } else {
  99.          throw new IllegalArgumentException("no such field " + var1 + " with type " + var2);
  100.       }
  101.    }
  102. }
  103.